package Week3;

import java.util.*;

public class Day14 {
}

//牛客:乒乓球筐
class Main3 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String s1 = in.next();
            String s2 = in.next();
            //模拟两个哈希表
            int[] arr1 = new int[26];
            int[] arr2 = new int[26];
            //将两个字符串的内容放入对应的哈希表中
            for (int i = 0; i < s1.length(); i++) {
                arr1[s1.charAt(i) - 'A']++;
            }

            for (int i = 0; i < s2.length(); i++) {
                arr2[s2.charAt(i) - 'A']++;
            }
            //标志
            boolean flag = true;
            //遍历哈希表
            for (int i = 0; i < 26; i++) {
                //如果哈希表1中不存在这个元素同时哈希表2中存在或者哈希表1中的元素个小于哈希表2中的元素个我们就标记为false
                if (arr1[i] == 0 && arr2[i] > 0 || arr1[i] < arr2[i]) {
                    flag = false;
                    break;
                }
            }
            //如果标记没有改变为true就返回yes,反之返回no
            System.out.println(flag ? "Yes" : "No");
        }
    }
}

//牛客:组队竞赛
class Main4 {
    //贪心
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        //创建数组，长度为组数乘于3，因为每组有3个人
        int[] arr = new int[n * 3];
        //放入元素
        for(int i = 0; i < n * 3; i++){
            arr[i] = in.nextInt();
        }
        //排序
        Arrays.sort(arr);

        //如果想让中位数最大，那么每组的第二大元素就为从排序后数组的倒数第二个元素，并依次递减两位的和，注意计算加和的个数为2我们的组数
        int pos = n * 3 - 2 , count = 1;
        long ret = 0;
        while(count++ <= n){
            ret += arr[pos];
            pos -= 2;
        }
        System.out.println(ret);
    }
}

//牛客:DP25 删除相邻数字的最大分数
class Main5 {
    //开数组，我们要开的数组大小应该为数组元素的最大值
    static int N = (int)1e4 + 10;
    static int[] sum = new int[N];
    //创建两个dp表
    static int[] f = new int[N];//表示选i位置的值
    static int[] g = new int[N];//表示不选i位置的值
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int x = 0;
        //计算对应元素的总和
        for(int i = 0; i < n; i++){
            x = in.nextInt();
            sum[x] += x;
        }

        //遍历所有的数
        for(int i = 1; i < N; i++){
            //如果选第i个数那么它前一个数必不选，此时它所形成的最大和为前一个数i-1不选的最大和加上此时i这个数的总和
            f[i] = g[i-1] + sum[i];
            //如果不选第i个数那么他有两种情况，前一个数选和前一个数不选，此时他所形成的最大和为前一个数i-1不选和选的它们两种情况各自所形成总和的最大值
            g[i] = Math.max(g[i - 1] , f[i - 1]);
        }
        //最后返回最后一个位置选和不选的最大值
        System.out.println(Math.max(g[N - 1] , f[N - 1]));
    }
}